package org.example.ims.Service.Base;

import org.example.ims.Entity.Base.Category;
import org.springframework.data.domain.Page;
import java.util.Optional;

/**
 * 商品类别服务接口
 * 提供对商品类别（Category）实体的基本业务操作
 */
public interface CategoryService {

    /**
     * 保存一个新的商品类别
     *
     * @param category 包含类别信息的对象
     * @return 已保存的类别对象
     */
    Category addCategory(Category category);

    /**
     * 保存一个新的商品类别
     *
     * @param category 包含类别信息的对象，且手动设置ID
     * @return 已保存的类别对象
     */
    Category addCategory2(Category category);


    /**
     * 根据类别ID查找商品类别
     *
     * @param categoryId 类别ID
     * @return 如果存在则返回对应的Optional<Category>，否则为空
     */
    Optional<Category> findCategoryById(Integer categoryId);

    /**
     * 获取所有商品类别列表
     *
     * @return 所有类别的列表
     */
    Page<Category> findAllCategories(Integer page, Integer size);
    /*自定义查询*/
    Page<Category> searchCategories(String name, Integer page, Integer size);

    /**
     * 更新指定ID的商品类别信息
     *
     * @param categoryId 要更新的类别ID
     * @param categoryDetails 新的类别信息
     * @return 更新后的类别对象，如果原类别不存在则返回null
     */
    Category updateCategory(Integer categoryId, Category categoryDetails);

    /**
     * 根据ID删除指定的商品类别
     *
     * @param categoryId 类别ID
     */
    void deleteCategoryById(Integer categoryId);
}